草庐IT

ios - sortedArrayUsingSelector 警告

全部标签

c++ - 为什么 g++ 4.8.1 会发出转换警告

当我以这种方式用g++4.8.1(64位)编译下面的代码时:$g++-Wconversion-omainmain.cpp我得到这个结果:main.cpp:Infunction‘intmain()’:main.cpp:12:20:warning:conversionto‘int’from‘longunsignedint’mayalteritsvalue[-Wconversion]inti=sizeof(x)/sizeof(x[0]);^我的期望是编译器应该能够在编译时计算表达式。如果您用普通的c编写类似的程序,gcc的工作就像一个魅力。这应该被认为是g++中的错误(例如clang++没有

c++ - 如何正确组合来自基类和派生类的函数以避免警告?

这个问题类似于this,但更复杂。有接口(interface)和类:classB{public:virtualstringgetName(intindex){returnnames.size()names;};templateclassA:publicT{public:stringgetName(void)//warninghere{returnname;};protected:stringname;};intmain(intargc,constchar*argv[]){Atest;}如您所见,我不能在A中使用usingT::getName,因为T可能没有getName()方法。我怎样

c++ - 错误 : 'ios_base' has not been declared

我正在使用libcurl下载序列化代码并将其打开,但是,我收到一个错误,看起来fstream丢失了,但它包含在内。我环顾四周,但很少发现错误。下面是错误和代码。错过了什么?编译错误输出g++-gtestGetprice2.cpp-otestGetprice2.o-std=gnu++11-lcurltestGetprice2.cpp:Infunction'intgetData()':testGetprice2.cpp:45:56:error:'ios_base'hasnotbeendeclaredtestGetprice2.cpp:45:72:error:'ios_base'hasnot

c++ - boost::asio::io_service 在 win_mutex 锁中崩溃

我一直在使用boost::asio时遇到问题,其中使用全局io_service实例创建的计时器和/或套接字在构造期间崩溃。发生崩溃的系统如下:Windows7适用于Windows桌面的VisualStudio2013Express;v12.0.31101.00更新4Boost1.57,动态链接,使用多线程编译,例如boost_thread-vc120-mt-gd-1_57.dll我已经能够在以下简化代码中重现该问题://文件global_io_service.h#ifndefINCLUDED_GLOBAL_IO_SERVICE_H#defineINCLUDED_GLOBAL_IO_SE

c++ - 为什么 cout.setf(ios::fixed) 将我的 float 更改为十六进制?

我最近遇到了这个与cout.setf(ios::fixed)有关的奇怪问题。我花了很长时间才找到原因,我想我会在这里询问以了解更多信息。问题在于-使用cout.setf(ios::fixed)时,所有float都打印为十六进制数。为什么会这样?ios::base的文档似乎并不暗示这会发生(至少对我而言)。我使用的是g++5.3.0,下面粘贴的是一个最小示例和输出。#include#includeusingnamespacestd;intmain(intargc,charconst*argv[]){complexI(0.0,1.0);doublepi=M_PI;cout.setf(ios

c++ - 从 Visual Studio 2013 迁移到 Visual Studio 2015 后,调用 printf 样式的函数会导致警告

我有一个调用fprintf的程序。在VisualStudio2013中,编译和执行的所有内容都没有错误和警告。现在该项目已迁移到VisualStudio2015(没有任何更改),我在大多数fprintf调用中收到以下警告:C4474:toomanyargumentspassedforformatstring大多数警告都指向以下代码行:fprintf(stderr,"Missingheaderfilename.Formantis:\n",pArg);我该如何解决这个问题?我是否需要重写我的代码,或者我的项目设置是否有问题导致这些警告?我看到了,在thisMSDN文章对这些函数进行了更改:

c++ - VS 编译警告 : result of 32-bit shift implicitly converted to 64 bits

VisualStudio2013发出恼人的(看似无关紧要的)编译警告:#include#definePRECISION16uint64_thi=0;for(uint8_ti=0;i这是编译警告:warningC4334:'改1好像解决了至1.所以我一直在尝试找出1中可能出现的问题.显然,如果i>=PRECISION,那么左移操作将产生未定义的行为。但是,变量i不超过PRECISION-1的值.此外,即使我们假设编译器无法推断出这个事实,我也看不出这个编译警告与左移操作数导致的潜在未定义行为有什么关系。也许它假定PRECISION-1-i的无符号值可以大于31。但是我应该如何告诉编译器它

c++ - 警告 C4661 :no suitable definition provided for explicit template instantiation request

我写了一个类模板并在不同的DLL中使用它,所以希望隐藏部分实现。为此,我使用“模板实例化”,但导出它,像这样,这里是头文件:#include#includeusingnamespacestd;templateclass__declspec(dllexport)Templated{public:Templated();};template__declspec(dllexport)Templated;intmain(){cout并且定义在单独的文件(.cpp)中templateTemplated::Templated(){}templateTemplated;我的问题是我收到警告,即使实例

c++ - 在 C++ 中显示 "anonymous"变量创建警告

我有这样一个类:classScopedLock{public:ScopedLock(Locker*lock){/*...*/}~ScopedLock(){/*...*/}};通常它被称为(这将在正确的地方调用ScopedLock的构造函数/析构函数):{ScopedLockl(&locker);//...}我不小心这样调用它:{ScopedLock(&locker);//...}这种“东西”的名称是什么?未使用的匿名局部变量?是否有可能避免这种情况?是否有针对此类“事物”的编译器警告? 最佳答案 您已经创建了一个类型为ScopedL

c++ - 其他库中的编译器警告

我将我的C++代码链接到几个库(其中几个库主要基于header),其中一些已经有一段时间没有更新了。我一直在GCC4.0上使用-Wall和Wextra编译我的代码一段时间,没有出现任何警告或错误。但是,现在我使用的是较新版本的GCC(4.3),我的一些文件一直在打印来自其他库的包含文件的警告(例如,warning:typequalifiersignoredonfunctionreturntype当库的模板化代码在返回的指针上使用restrict关键字时)。同样,当我使用GCC4.1编译时,我正在使用的集群上的一个稍旧版本的OpenMPI打印出许多警告。问题是:当离开本地目录以读取头文件